Soru & Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user nedra51beatty
nedra51beatty
12.07.2022 - 06:49

Personally, I would've made END STATE implied by BEGIN STATE and END STATE implied by BEGIN STATE so you 'have' to use END STATE after a BEGIN STATE (you technically could just use a fnf mod but that looks like a mismatched curly bracket when reading, even though it's not); however, the current arrangement is fine too.

picture-251273-1554840195.png
ayigithan21
09.04.2019 - 11:21

Sırf sizin için hesap açtım. API yani bir siteden veri çekmek için gerekli modülleri kullanabilirsiniz. Ben python dilini kullandığım için basit olarak anlatmaya çalışacağım.

Attığınız sitenin "https://www.anneysen.com/" sitesin'de isimi girip butona basıp verileri çekmek istiyorsunuz anladığım kadarıyla.

Öncellikle sitedeki çekeceğiniz verileri göz önüne almanız lazım. 

"<div class="content"> <p> verilen isim hakkında bilgiler </p> </div>"

Veriyi python'da bs4 ile çekilen versiyonu şu şekildedir.

verilecekbilgi = soup.find("div", {"class": "content"})

yazıp döngü ile çıkarmanız gerek p etiketlerini yada direk print(verilecekbilgi.text)

yapabilirsiniz. Şimdi isim aramaya gelelim

a = İsim giriniz.:

yaptığınız anda a değişkenini 

url=requests.get("https://www.anneysen.com/bebek-isimleri?word="+a)

şekilinde almalısınız. 

picture-472-1375079047.jpg
mehmet.altiparmak
22.12.2013 - 04:06

Merhaba Işıl,

jsoup ile yapabiliyorsun söylediğin gibi. Ancak telefon üzerinde çalışan bir uygulamada bu işlemi yapmak çok mantıklı değil çünkü bilgileri çektiğin sitelerin herhangi birisinde bir değişiklik olursa uygulamanın çalışmasında bozukluklar meydana gelmesi çok yüksek olasılık. 

Yine de parse işlemi nasıl yapılır, örnek olması amacı ile basitçe http://www.ismininanlamlari.com/ sitesinde ön sayfada görünen isimlerin listesini çekip bir TextView'da gösteren ufak bir uygulama yaptım. Buradan indirebilirsin.

İsimleri çekebilmek için neler yapmalısın:

  • İsimleri çekmek istediğin sitenin kaynak html'inin yapısını incelemesin. İsimlerin hangi element ile gösterildiğini bulmalısın. (Bir sitenin kaynak html'ini incelemek için IE, Firefox, Chrome'da bulunan Developer Tools araçlarını kullanabilirsin. Chrome'da developer tools'u açmak için CTRL+Shift+ı kombinasyonuna basabilirsin.)
  • Kullandığın html parser ile o elemente karşılık gelen Element nesnesini çekmelisin. (Örnek uygulamada nasıl yapıldığını görebilirsin)
  • Element'in innerText özelliğinden isme ulaşabilirsin. 

Jsoup kütüphanesini buradan indirebilirsin. 

Anlamadığın yerleri sormaya devam et lütfen, elimden geldiğince açıklamaya çalışayım. 

Profile picture for user isil_ay90
isil_ay90
21.12.2013 - 09:21

Oncelikle tesekur ederim,

Bu islemi android de gerceklestirecegim. Uygulamada isim analizi yapacagim.Kisi ismi yazip butona bastigi anda ismin analiz bilgilerinin sitelerden gelmesini istiyorum. Arastirmalarimda bu islemin jsoup ile yapilabildigi hakkinda bilgi edindim. Bu arada html bilgim de yok. :(

picture-472-1375079047.jpg
mehmet.altiparmak
21.12.2013 - 07:26

Merhaba Işıl,

Hangi programlama dilini kullanacaksın? Kullanmayı düşündüğün dile göre kolayca html parse etmeni sğalayabilecek kütüphaneler önerebiliriz. Örneğin csharp ile geliştirme yapıyorsan HTML Agility Pack yaygın olarak kullanılan bir kütüphane. 

Tabi bu kütüphaneleri kolayca kullanabilmek için html konusunda bilgi sahibi olmak gerekiyor. Ek olarak her sitenin kaynak html'i ne yazık ki well-formed olmuyor bu yüzden parse etmeden önce html'deki bozuklukları gidermek gerekebiliyor. Yine bu işi yapan kütüphaneler de mevcut.